package com.example.springboot.controller;

import com.example.springboot.pojo.User;
import com.example.springboot.service.impl.UserServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;

import java.util.ArrayList;

/**
 * 用户信息控制层
 * @Author:wzf
 * @Data:2022/2/21
 * @Version:1.0
 */
@Controller
@RequestMapping("/user")
public class UserController {

  /**
   * Service实现类
   */
  @Autowired
  private UserServiceImpl userService;


  /**
   * 查询所有的用户信息
   * @return 返回前端一个UserList集合
   */
  @GetMapping("/")
  public String getUserInfo(Model model){
    ArrayList<User> listUserInfo = userService.getUserInfo();
    model.addAttribute("listInfo",listUserInfo);
    return "index.html";
  }


  /**
   * 根据用户ID来查询用户信息
   * @param id 用户ID
   * @return  用户信息
   */
  @GetMapping("/findByID/{id}")
  public User getUserByID(@PathVariable("id") Integer id){
    return userService.findByID(id);
  }


  /**
   * 添加一个用户信息
   * @param user 用户信息
   * @return  提示
   */
  @PostMapping("/insertUser")
  public String  insertUser(User user){
    int i = userService.insertUser(user);
    if( i == 1){
      return "添加成功";
    }
    else{
      return "添加失败";
    }
  }


  /**
   * 根据ID来删除用户
   * @param id  用户ID
   * @return  提示
   */
  @GetMapping("/deleteUser/{id}/delete")
  public String deleteUserByName(@PathVariable("id") Integer id){
    int i = userService.deleteUserByName(id);
    if( i == 1){
      return "删除成功";
    }
    else{
      return "删除失败";
    }
  }

  /**
   * 修改用户信息
   * @param id 用户ID
   * @param name  用户名称
   * @param age 用户年龄
   * @param email 用户邮箱
   * @return  提示
   */
  @PostMapping("/updateUser")
  public String updateUser(@RequestParam("id") Integer id,
                           @RequestParam("name") String name,
                           @RequestParam("age") Integer age,
                           @RequestParam("email") String email){
//    session.get
    Integer resultInt = userService.updateUser(id, name, age, email);
    if (resultInt == 1){
       return "修改成功";
    }
    else{
      return "修改失败";
    }
  }

  /**
   * 分页功能的请求处理
   * @param currentPage 当前页数
   * @param pageSize  每页的数量
   * @return
   */
  @GetMapping("/userPage")
  public ArrayList<User> userPage(Integer currentPage,Integer pageSize){
    return userService.findUserByPage(currentPage, pageSize);
  }

  /**
   *  多表查询的请求处理
   * @return  用户集合
   */
  @GetMapping("/UserByUserScope")
  public ArrayList<User> findUserByUserScope(){
    return userService.findUserByUserScope();
  }


  /**
   * 根据年龄大小来进行的排序操作
   * @return  排序后的用户集合
   */
  @GetMapping("/socketUser")
  @Value("${com.name}")
  public ArrayList<User> socketUserByAge(){

    return userService.socketUserByAge();
  }
}
